package com.wsoft.core.context;

import com.wsoft.enums.AuthLoginModeEnum;
import org.springframework.util.StringUtils;

/**
 * 用户是否需要登录
 *
 * @author: juiet
 * @date: 2024年10月23日 18:28
 */
public class AuthLoginModeContextHolder {

    private static final ThreadLocal<String> contextHolder = new ThreadLocal();

    /**
     * 强制需要登录(默认情况)
     */
    public static void force() {
        contextHolder.set(AuthLoginModeEnum.FORCE.getCode());
    }

    /**
     * 可以登录，可以不登录（不报错，业务处理后续）
     */
    public static void need() {
        contextHolder.set(AuthLoginModeEnum.NEED.getCode());
    }

    /**
     * 无需登录（不会返回当前用户信息）
     */
    public static void not() {
        contextHolder.set(AuthLoginModeEnum.NOT.getCode());
    }

    /**
     * 获取当前登录模式
     * @return 默认强制登录
     */
    public static String authLoginMode() {
        String status = contextHolder.get();
        if(StringUtils.hasText(status)){
            return status;
        }
        return AuthLoginModeEnum.FORCE.getCode();
    }

    public static void clear() {
        String auth = contextHolder.get();
        if (StringUtils.hasText(auth)) {
            auth = null;
        }
    }

}
